package com.dashanchessgame.gameui;


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


/**
 * @author 界面初始化
 */
public class GameFrame extends JFrame implements MouseListener, ActionListener {
    JMenuItem replayItem = new JMenuItem("重新游戏");//重新开始按钮对象
    JMenuItem closeGameItem = new JMenuItem("关闭游戏");//关闭游戏按钮对象
    JMenuItem gameplayItem = new JMenuItem("游戏玩法");//游戏玩法对象

    CanvasChess canvasChess = new CanvasChess();



    public GameFrame() {
        initGameJFame();
        //初始化菜单
        initGameJFameBar();

        //初始化页面象棋布局数据
        initDate();
        //是否显示窗口
        this.setVisible(true);

    }

    /**
     * 初始化象棋界面位置数据
     */
    private void initDate() {

        //添加到界面中
        this.add(canvasChess);
    }

    /**
     * c初始化游戏菜单
     */
    private void initGameJFameBar() {

        //初始化象棋游戏菜单
        //创建整个菜单的对象
        JMenuBar jMenuBar = new JMenuBar();
        //创建重新开始按钮
        //创建菜单上两个选项对象（功能,关于我们）
        JMenu introductionGameplayJMenu = new JMenu("功能");
        JMenu aboutJMenu = new JMenu("游戏玩法");
        //添加重新按钮游戏到菜单功能下面
        introductionGameplayJMenu.add(this.replayItem);
        //添加关闭游戏到功能下面去
        introductionGameplayJMenu.add(this.closeGameItem);
        //添加到游戏玩法到菜单下面
        aboutJMenu.add(this.gameplayItem);

        //给每个条目绑定事件
//        添加重新游戏按钮监听事件
        this.replayItem.addActionListener(this);
//        添加关闭游戏按钮监听事件
        this.closeGameItem.addActionListener(this);
//        添加公众号按钮监听事件
        this.gameplayItem.addActionListener(this);
        JButton jButton = new JButton("开始游戏");
        this.add(jButton, BorderLayout.WEST);


        //将每个选项添加到菜单栏但中
        jMenuBar.add(introductionGameplayJMenu);
        jMenuBar.add(aboutJMenu);


        //给整个界面去设置一个菜单
        this.setJMenuBar(jMenuBar);
    }

    /**
     * 初始化象棋界面图片
     */

    private void initGameJFame() {
        this.toFront();
        //初始化界面
        ImageIcon icon = new ImageIcon("image/红将.gif");
        this.setIconImage(icon.getImage());
        //在创建主界面的时候，初始化宽高
        this.setSize(700, 750);
        //设置界面的标题
        this.setTitle("象棋游戏v1.0");
//        //设置界面置顶最上层
//        this.setAlwaysOnTop(true);
        //设置居中显示
        this.setLocationRelativeTo(null);
        //设置内置容器布局
        this.setLayout(new BorderLayout());
        //创建画布对象
        //设置游戏的关闭模式 关闭时推出
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    }


    //鼠标点击事件
    @Override
    public void mouseClicked(MouseEvent e) {

    }

    // 按下鼠标事件
    @Override
    public void mousePressed(MouseEvent e) {

    }


    //添加鼠标释放功能
    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    //鼠标退出事件
    @Override
    public void mouseExited(MouseEvent e) {

    }

    /**
     * @param e the event to be processed
     *          添加按钮监听时间
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        canvasChess.initMap();//新游戏
        canvasChess.repaint();//新游戏后，出棋先后顺序互换
        canvasChess.selectR = -1;
        canvasChess.selectC = -1;
        canvasChess.isBlack = !canvasChess.isBlack; //把isBlack值重新设置
    }

    //

}
